package com.ada.spark.rddfile

import org.apache.spark.{SparkConf, SparkContext}

/**
  * SequenceFile文件是Hadoop用来存储二进制形式的key-value对而设计的一种平面文件(Flat File)。Spark 有专门用来读取 SequenceFile 的接口。在 SparkContext 中，可以调用 sequenceFile[ keyClass, valueClass](path)。
  *
  * 注意：SequenceFile文件只针对PairRDD
  */
object SequenceFileTest {
    def main(args: Array[String]): Unit = {
        //初始化配置信息及SparkContext
        val sparkConf: SparkConf = new SparkConf().setAppName("SequenceFileTest").setMaster("local[*]")
        val sc = new SparkContext(sparkConf)

        val rdd = sc.parallelize(Array((1, 2), (3, 4), (5, 6)))

        //保存到文件
        rdd.saveAsSequenceFile("seqFile")

        //从文件中读取
        val seq = sc.sequenceFile[Int, Int]("seqFile")

        //打印结果
        println(seq.collect().mkString(","))
        //(1,2),(3,4),(5,6)
    }
}
